package singleton.type7;

/**
 * 静态内部类 <br>
 * 利用静态内部类线程安全，且只会初始化一次的特性实现单例<br>
 * 结论: 推荐使用
 * @author yi qiang
 * @date 2021/5/2 22:07
 */
public class Singleton7 {

    public static void main(String[] args) {
        Singleton singleton=Singleton.getInstance();
        Singleton singleton2=Singleton.getInstance();
        System.out.println(singleton==singleton2);
    }


}

class Singleton{


    //1.构造器私有化,使得外部不能通过new创建实例
    private Singleton(){
    }
    

    //2.本类内部创建一个实例
    private static class SingletonInner{
        private static final Singleton INSTANCE=new Singleton();
    }

    //3.对外暴露一个公共的静态方法获取实例
    public static  Singleton getInstance(){
        return SingletonInner.INSTANCE;
    }
}
